{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# load_from_csv:\n",
    "# load a google benchmark run result exported in CSV format.\n",
    "# "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "import re as re\n",
    "import pandas as pd\n",
    "\n",
    "# Return a Series with either 'mean' or 'stddev' (arg) for a given benchmark name\n",
    "# 1. For every row with name corresponding to $benchmark\n",
    "  # 1.1 Extract value of \"/($x)_arg\" with arg={mean\\stddev}\n",
    "  # 1.2 Set pandas series index $x value to line['real_time|cpu_time']\n",
    "# 2. return result series\n",
    "def load_from_csv(filename, benchmark, stat='mean', value='real_time'):\n",
    "    r = pd.Series();\n",
    "    df = pd.read_csv(filename, skiprows=3)\n",
    "    \n",
    "    for index, row in df.iterrows():\n",
    "        row_name = str(row['name'])\n",
    "        if (benchmark in row_name) and (stat in row_name): \n",
    "            arg = re.match(\".*/(\\d+)_.*\", row_name)\n",
    "            if arg and arg.group(1):\n",
    "                r.loc[arg.group(1)] = row[value]\n",
    "    return r\n",
    "\n",
    "linearize_tree_dfs_rec_mean = load_from_csv('linearize_dfs_tree.csv', stat='mean', benchmark='BM_linearize_tree_dfs_rec')\n",
    "linearize_tree_dfs_rec_min = load_from_csv('linearize_dfs_tree.csv', stat='min', benchmark='BM_linearize_tree_dfs_rec')\n",
    "linearize_tree_dfs_rec_max = load_from_csv('linearize_dfs_tree.csv', stat='max', benchmark='BM_linearize_tree_dfs_rec')\n",
    "\n",
    "linearize_dfs_mean = load_from_csv('linearize_dfs_tree.csv', stat='mean', benchmark='BM_linearize_dfs_on_tree')\n",
    "linearize_dfs_min = load_from_csv('linearize_dfs_tree.csv', stat='min', benchmark='BM_linearize_dfs_on_tree')\n",
    "linearize_dfs_max = load_from_csv('linearize_dfs_tree.csv', stat='max', benchmark='BM_linearize_dfs_on_tree')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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QzcYCACPPPIId999925148aN4/7772+2YyxatIgrrrhit7qMjAz+/e9/73Ofxx13HKWlpbvVPfbYY4wYMWKf+xQRkTZobfhvUe6VsCS5LolRsiYAXHnllfv1loCmGDFiRKM3M+yL/Un0REREAFg3D8qLIaMTHDg46ZI1nQYVERGRtu0/DwbLfvW/FSdqStZERESkbVs5M1h+4evRxtEAJWsiIiLSdu1YD0WbwdrDgPrfoBM1JWsiIiLSds35U7A8aDi07xBtLA1QstYCql/ztH79ei666KKEH2/KlCk8+uijCem7X79+bN68GYB77rmHIUOGcPnllyfkWCIiIgn3QfAWG46aGG0cjdDdoC2od+/eTXpN1P6oqKhg0qRJCT1GtT/84Q+88sor9b6cXUREJOmVFsK2j4LyiMRPpuyrtpWsvfIj+GzRfnWRVVkBaTHDdtAIOOvXTdp3zZo1nHvuuSxevJipU6cyffp0ioqKWLVqFRdccAF33HEHADNmzGDy5MmUlpZy+OGH88gjj5CTk8Ott97KCy+8QHFxMWPHjuWBBx7AzMjLy2Ps2LHMnj2bCRMmUFBQQE5ODpdddhlnn312zfEXLVrE6tWr6dixI5MmTeKTTz4B4K677mLcuHH1xrxlyxYmTpzIpk2bOPbYY2veATpp0iRWr17NhAkTuOqqqxg9ejQ33ngjVVVVpKWlMWvWrJR6k4GIiKSgRU8DDp37QHaPqKNpkE6DRmjBggU89dRTLFq0iKeeeoq1a9eyefNmbrvtNmbOnMn8+fPJzc3ld7/7HQDXX389c+bMYfHixRQXF/Piiy/W9LV9+3befPNNvve979XU9e7dmwULFrBgwQKuvfZaLrzwQg477DBuvPFGbrrpJubMmcOzzz7LNddc02CMv/jFLzjhhBN47733mDBhQk2CN2XKFHr37s0bb7zBTTfdxJ133sn999/P7Nmzeeutt8jKykrQqImIiDST9/4aLIecG20ccbStmbUmzoA1prgZ3335pS99iS5dugAwdOhQPv74Y7Zv386SJUtqZrrKyso4/vjjAXjjjTe44447KCoqYuvWrQwbNozx48cDcMkllzR4nNmzZ/PQQw/VvIh95syZLFmypGb7zp07G3yn56xZs/j73/8OwDnnnEO3bt3qPca4ceO4+eabufDCC7nsssvo06fP3g6HiIhIy6mq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RERERPydNv0SERER8WMKayIiIiJ+TGFNRERExI8prImIiIj4MYU1ERERET9mbKXuU+lbxphDQHIVX6YZcLiKr1GTqX/Kpz4qm/qnfOqjsql/yqc+Klt19U97a23z8g4KqLBWHYwxSdbaeF/X4a/UP+VTH5VN/VM+9VHZ1D/lUx+Vzd/6R7dBRURERPyYwpqIiIiIH1NYu3Cv+boAP6f+KZ/6qGzqn/Kpj8qm/imf+qhsftU/emZNRERExI9pZE1ERETEjymsiYiIiPgxhTURERERP6awJiIiIuLHFNZERERE/JjCmoiIiIgfU1gTERER8WMKayIiIiJ+TGFNRERExI8prImIiIj4MYU1ERERET+msCYiIiLixxTWRERERPyYwpqIiIiIH1NYExEREfFjCmsiIiIifkxhTURERMSPKayJiIiI+DGFNRERERE/prAmIiIi4scU1kRERET8mMKaiIiIiB9TWBMRERHxYwprIiIiIn5MYU1ERETEjymsiYiIiPgxhTURERERP6awJiIiIuLHFNZERERE/JjCmoiIiIgfU1gTERER8WMKayIiIiJ+TGFNRERExI8prImIiIj4MYU1ERERET+msCYiIiLixxTWRERERPyYwpqIiIiIH1NYExEREfFjCmsiIiIifkxhTURERMSPKayJiIiI+DGFNRERERE/prAmIiIi4seCfV1AZWrWrJmNjo6u0mvk5ORQv379Kr1GTab+KZ/6qGzqn/Kpj8qm/imf+qhs1dU/q1evPmytbV7ecQER1owxE4GJnTt3JikpqUqvlZiYSEJCQpVeoyZT/5RPfVQ29U/51EdlU/+UT31UturqH2NM8vkcFxC3Qa2186y1d0VERPi6FBEREZFKFRBhTURERCRQKayJiIiI+LGAeGatLEVFRaSmppKfn18p54uIiGDr1q2Vcq5AFEj9ExYWRlRUFCEhIb4uRUREarGAD2upqak0aNCA6OhojDEXfb6srCwaNGhQCZUFpkDpH2stR44cITU1lQ4dOvi6HBERqcUC/jZofn4+TZs2rZSgJrWHMYamTZtW2oisiIhIRQVEWDPGTDTGvHbixIlzvV/NFUkg0PeNiIj4g4AIa1q6Q0RERAJVQIQ1ERERkYtWlA8bP6Tjrpm+rqQUhbVqEB4eDkB6ejrXX399lV/vlVde4a233qqUcyUmJrJ06dJKOdf5uv322/nwww8BWLx4MT179iQuLo68vLxqrUNERGoBayF9HXxyPzwXDbPvpPnBJVCQ5evKSgT8bNDTPTVvM1vSMy/qHB6Ph6CgoJLXMZENmTqx53l9bmRkZEkIqSput5u777670s6XmJhIeHg4Q4cOPeu1goOr9lvonXfe4fe//z2TJ0+u8DnO/JqJiIiQexTW/RdWvgrH94EJgs5jYMi9rEj2khDqPysbaGStGu3du5devXoBMHPmTK699louv/xyunTpwkMPPVRy3Pz58xkyZAj9+vXjhhtuIDs7G4Cnn36aAQMG0KtXL+666y6stQAkJCTw2GOPMXLkSF588UWefPJJ/vrXv5Kenk5cXFzJn6CgIJKTkzl06BDXXXcdAwYMYMCAASxZsuSc9b7yyiv8/e9/Jy4ujsWLF3P77bfzu9/9jlGjRvHwww+Tk5PDHXfcwYABA+jbty+fffYZ4ASkBx98kAEDBhAbG8urr756zn6x1nL//fcTExPDhAkTOHjwIAAzZszg/fff5+mnn+aWW24hIyODESNGEBcXR69evVi8ePE5zxkeHs4TTzzBoEGDWLZsGatXr2bkyJH079+fcePGkZGRAcDOnTsZM2YMffr0oV+/fuzatet8v5wiIlLTeD2wYwH8eyL8pRPM/wNg4Irn4KFdcMv70DEBjJ/FI2ttwPzp37+/PdOWLVt+1HYxMjMzL/hz6tevb621ds+ePbZnz57WWmvffPNN26FDB3v8+HGbl5dn27VrZ/ft22cPHTpkL7nkEpudnW2ttfbZZ5+1Tz31lLXW2iNHjpSc82c/+5mdO3eutdbakSNH2nvuuafkvalTp9q//OUvpWp46aWX7A033GCttXbSpEl28eLF1lprk5OTbffu3c9Z+5nnuu222+yECROs2+221lr76KOP2rfffttaa+2xY8dsp06dbHZ2tn311VftH//4R2uttfn5+bZ///529+7dZ73G7Nmz7ZgxY6zb7bZpaWk2IiLCfvDBByXXO/nxX//6V/vMM89Ya611u91lfi0A+95771lrrS0sLLRDhgyxBw8etNZaO2vWLDt58mRrrbUDBw60c+bMsdZam5eXZ3Nyckqdp7K/f6y1duHChZV+zkCi/imf+qhs6p/y1bo+OrzT2s9+b+3/tbF2akNr/9jC2tl3WZux8ayHV1f/AEn2PPJNrboN6m8uvfRSTs5gjYmJITk5mePHj7NlyxaGDRsGQGFhIUOGDAFg4cKFPP/88+Tm5nL06FF69uzJxIkTAbjxxhvPeZ0lS5YwY8aMkpGoBQsWsGXLlpL3MzMzL2gx2xtuuKHktuL8+fOZO3cuf/3rXwEoKChg3759zJ8/nw0bNpTc9j1x4gQ7duw46wKzixYtYtKkSQQFBREZGcno0aPPet0BAwZwxx13UFRUxNVXX01cXNw5awwKCuK6664DYNu2bWzatImxY8cCzqhf69atycrKIi0tjWuuuQZwdiwQEZEAUZgDG96HZdPhyA6nrWUvGP5b6PETCK7j2/ougMKaD4WGhpZ8HBQUhNvtxlrL2LFjeffdd0sdm5+fz7333ktSUhJt27blySefLLVga/369c96jYyMDO68807mzp1bMtHB6/WybNky6tatW6G6T7+WtZbZs2fTrVs34NQOBtZa/vGPfzBu3LjzOuf5rGk2YsQIFi1axGeffcatt97Kgw8+yM9//vOzHhsWFlYSKK219OzZk2XLlpU6JjPz4p5fFBERP2MtpKyERX+B3QvB64bQCBh0Dwz7NTSM9HWFFeJnN2VPMcZcYox5xRgzwxhTvdMRfWjw4MEsWbKEnTt3ApCbm8v27dtLglmzZs3Izs4+r4kKRUVF/PSnP+W5556ja9euJe2XXXYZL730UsnrdevWnfMcDRo0ICvr3DNixo0bxz/+8Y+S5+fWr19f0v7Pf/6ToqIiALZv305OTs5ZzzFixAhmzZqFx+MhIyODhQsXnvW45ORkWrRowZQpU7jzzjtZs2bNOes6Xbdu3Th06FBJWCsqKmLz5s00bNiQqKgoPv74Y8AZFczNzT2vc4qIiB/JPgjzH4fnO8Ibl8Gub6BNPPz8E3gkGa54tsYGNajmsGaMecMYc9AYs+mM9suNMduMMTuNMY8AWGsXW2vvBj4F/l2ddfpS8+bNmTlzJpMmTSI2NpbBgwfzww8/0KhRI6ZMmULv3r25+uqrGTBgQLnnWrp0KatWrWLq1KklkwzS09OZNm0aSUlJxMbGEhMTwyuvvHLOc0ycOJGPPvqoZILBmR5//HGKioqIjY2lV69ePPPMMwD84he/ICYmhn79+tGrVy9++ctf4na7z3qNa665hi5dutC7d2/uueceRo4cedbjEhMTiYuLo2/fvsyePZvf/OY35fYBQJ06dfjwww95+OGH6dOnD3FxcSXLkbz99ttMmzaN2NhYhg4dyv79+8/rnCIi4mOeIlg3C14eAn/tAkunQVAwjHwEHtkHd35VPFmg5u9GY06OiFTLxYwZAWQDb1lrexW3BQHbgbFAKrAKmGSt3VL8/vvAL6y15d6zio+Pt0lJSaXatm7dSo8ePSrt/yFQNiqvKoHWP5X9/QNO6ExISKjUcwYS9U/51EdlU/+Ur0b3UcZGSPw/2LkAPIXgCnZC2egnILJPpVyiuvrHGLPaWhtf7nHVGdYAjDHRwKenhbUhwJPW2nHFrx8FsNb+2RjTDnjcWjuljPPdBdwF0LJly/6zZs0q9X5ERASdO3eutPq1ZlfZAq1/du7cybn2nK2o7OzskucH5cfUP+VTH5VN/VO+mtZHQe5cWmR8Q6uMb4jI3YMXF0cierM/8jKONh+CdVXu753q6p9Ro0adV1jzhwkGbYCU016nAoOKP74TeLOsT7bWvga8Bs7I2plJeOvWrZU60hNoI0cnvfnmm7z44oul2oYNG8b06dMv6Dxl9c/GjRu59dZbS7WFhoayYsWKCyv2NIMGDaKgoKBU29tvv03v3r0rfM7ThYWF0bdv30o510k1+l+01UD9Uz71UdnUP+WrEX1kLWz5GBb/DfZvBCwEh0HM1bjGPEXzJtE0r6JL+1v/+ENYO9vNZAtgrZ16XicwZiIwsTJH0GqbyZMnX9QuAeejd+/eZU5mqIiLCXoiIuKHDm2Hb/8IO+aDu3jVg2ZdYfgD0GdSQDyDdqH8IaylAm1Pex0FpF/ICay184B58fHx57xdKiIiIn6qMA++/3+w9m3IKp7oVac+xN0CY56E8Ba+rM7n/CGsrQK6GGM6AGnATcDNF3ICjayJiIjUQGlr4IuHIW2Vc9sTA61iYeRD0GOir6vzG9Ua1owx7wIJQDNjTCow1Vr7ujHmfuArIAh4w1q7+ULOq5E1ERGRGsJaWPcOJP4ZTqQ6baER0OdGSHgM6jX2bX1+qFrDmrV20jnaPwc+r85aREREpBoV5cE3T8Oat6Aw22lr3gMufQK6j/dtbX7Ob3cwuBDGmInGmNcqe4mFynJy+m96ejrXX399lV/vlVde4a233qqSc0dHR3P48GEApk2bRo8ePbjllluq5FoiIhIAjiXDOz+F/2sDy192Jg10mwC/2QT3LVdQOw/+8MzaRTvv26BfPFI8/bfi6nrczgrJJ7Xq7WxjcR4iIyPPa5uoi+F2u7n77rur9Bonvfzyy3zxxRdn3ZxdRERquZ0LnC2gDm5xXtdtAgOnwCUPQnCIb2urYQIirNWUCQZ79+7lyiuvZNOmTcycOZO5c+eSm5vLrl27uOaaa3j++ecBmD9/PlOnTqWgoIBOnTrx5ptvEh4eztNPP828efPIy8tj6NChvPrqqxhjSEhIYOjQoSxZsoSrrrqKrKwswsPDufnmmxk//tS/WDZu3Mju3bupV68ed999N/v27QPghRdeYNiwYWet+ciRI0yaNIlDhw4xcODAkj1A7777bnbv3s1VV13FHXfcQb9+/fjNb36D1+slKCiIRYsWBeR6dCIiUgaPG5ZPhyXTINe5C0OLGBjzFHS9zLe11WABEdbOe2TtPEfAypJXiYvirlu3jrVr1xIaGkq3bt341a9+Rd26dXnmmWdYsGAB9evX57nnnuNvf/sbTzzxBPfffz9PPPEEALfeeiuffvopEyc6s2WOHz/Od999B8CTTz4JOCN5J9c1mz59Ot999x3t27fn5ptv5oEHHmD48OHs27ePcePGsXXr1rPW+NRTTzF8+HCeeOIJPvvsM1577TXAudX65ZdfsnDhQpo1a8bEiROZPn06sbGxGGMICwurlD4SEZEaIPcYzP8DbPwQPAXOFlDdJ8IVz0FEG19XV+MFRFirqS699FIiIiIAiImJITk5mePHj7Nly5aSka7CwkKGDBkCwMKFC3n++efJzc3l6NGj9OzZsySs3Xjjjee8zpIlS5gxY0bJRuwLFixgy5YtJe9nZmaec+eBRYsWMWfOHAAmTJhA48Znn6UzbNgwfve733Hddddx8803ExUVdaHdISIiNU3GemfpjX3LAevc6hz0OxjxIFTyFlC1mcKaD4WGhpZ8HBQUhNvtxlrL2LFjeffdd0sdm5+fz7333ktSUhJt27blySefJD8/v+T9+vXrn/UaGRkZ3HnnncydO7dkooPX62XZsmXUrVv3vOo057Fa9COPPMKECRP46KOPGDx4MAsWLKB79+7ndX4REalBrIWNH8C3f4Lje522lj2dW51dxvq0tECl2aB+ZvDgwSxZsoSdO3cCkJuby/bt20uCWbNmzcjOzj6viQpFRUX89Kc/5bnnnqNr164l7ZdddhkvvfRSyeuytoAaMWIE77zzDgBffPEFx44dO+txu3btonfv3jzwwAPEx8fzww8/lP8/KyIiNUdhLix4Cp5tC3OmQGaqc6vzt5vgnqUKalUoIMKatXaetfauk7cUa7LmzZszc+ZMJk2aRGxsLIMHD+aHH36gUaNGTJkyhd69e3P11VczYMCAcs+1dOlSVq1axdSpU4mLiyMuLo709HSmTZtGUlISsbGxxMTE8Morr5zzHFOnTmXRokX069eP+fPn065du7Me98ILL9CrVy+GDh1K3bp1ueKKKyrcByIi4keO74NZNzsh7fu/Oc+jJTwKj6XDTf+BRm3LP4dcFHNydl8giI+Pt0lJSaXatm7dSo8ePSrtGud6tkscgdY/lf39A5CYmEhCQkKlnjOQqH/Kpz4qm/qnfOfVR7sS4ev/PbXkVfMeMGYqdL084DdTr67vIWPMamttfHnH6Zk1ERERcXiKYNUM+P7vkH3AmSTQbQJc9idoqjU1fSUgwlpNWWfNn7355pu8+OKLpdqGDRvG9OnTfVSRiIhUm9yj8M1TsH6Ws8NAWASMeAiG/RpCA+duSU0VEGGtvHXWrLXnNaOxNps8eTKTJ0/2dRl+JZAeERAROauMTfDVo7B3MWChWVcY/Th0vxJcAfFYe0AIiLBWlrCwMI4cOULTpk0V2OS8WWs5cuSIFvcVkcDj9dLk8AqY9gAc3Q3GBV3HwaVToWWMr6uTswj4sBYVFUVqaiqHDh2qlPPl5+frF3gZAql/wsLCtLiviASOwzud2Zxb5xJbkAV1wmH472DI/VC/qa+rkzIEfFgLCQmp1I3GExMT6du3b6WdL9Cof0RE/EjWAVj5Gqz7D2Ttd9paxLCl6Thirv8DBGlD9ZogIMKaJhiIiIgUy8+EDbNg5b/g8HanLaItjPpf6HsLNIzkYGIiMQpqNUZAhLXz3shdREQkELkLYNuXsPwlSE0C63X26Rx8H/S/DZp383WFchECIqyJiIjUOl4vJC+B5S/DzgXgKYSQehB7I8TfCVHxAb94bW2hsCYiIlJTWOvsKJD0OmyaDQVZ4AqBzpfCgCnQMQGC9Kv9YmTlF+Hxs6Wb9BUVERHxd8f2wtr/wJq3IXu/s9xG1EAYOAW6jYc69XxdYY1X4PYwc8lepn2zg95NLZeO8nVFpyisiYiI+KOcw87o2aoZpyYKNO8BIx6EXtdCvSa+rS9AeLyW91el8OyXWzmR5wYgPdtwIq+IiLr+MQlDYU1ERMRfFGTDts+dgJayErDFMzn/AH1ugkbtfF1hQPlsQzpPztvCoawCAFwGxvVsxfWRmX4T1CBAwpqW7hARkRrLUwS7voU1b8H2r8BbVDyT815nqY2WPX1dYcBZtO0gj328idRjeQAEuQxXxrbmqYk9aVS/DomJib4t8AwBEda0dIeIiNQo1kLKClj3X9j0IRTmODM5e18P/X4ObQdrb84qsCb5GA99uIGdh7IBCHYZrunbhqkTYwgP85+RtDMFRFgTERGpEQ5uhfXvwbp3IOfgqZmc/W+HTpdCcB1fVxiQtu3P5H8+WM+mtEwAQoIMN8a35Q8TelC3jv9HIf+vUEREpCY7kQobP3Rmcx7ZcWom52V/hO4TILSBrysMWClHc3ngvXUkJR8DoE6wi1sGtuPR8d2pExzk4+rOn8KaiIhIZcvPhC2fwNq3T00UaN4Drngeel4D4S18XWFAO5SVzwPvref7nYcBCAt2cdvQaB4c143goJp3e1lhTUREpDKcnCiw7h1nRqenCBq0hpEPQ58boUlHX1cY8I7nFvL7D9bzzdaDWKBuSBC/uKQDD4zpgqsGPwOosCYiIlJR1kL6Glg/Cza8B/knoE449LnZmSjQpr+2fKoG2QVFPDJ7I59vzMBroX5oEHeP6MT9oztjAqD/FdZEREQu1PF9Tjhb8zYcTwZXMHQaDf0nQ+cxmihQTfIK3Tz+ySY+WpuOx2tpEBbM/aM6c9eIjgER0k5SWBMRETkfecdPPYeWusppa90HLvkfiPkJ1G3k2/pqkQK3h6fnbeG9VSm4vZaIuiH8ZkwXJg+NDqiQdpLfhjVjjAv4I9AQSLLW/tvHJYmISG3jLoSdC5zn0E4uWNswEhIec3YUaNze1xXWKvlFHv7y1TbeWraXIo+lcb0Q/ueybtwyqF1AhrSTqjWsGWPeAK4EDlpre53WfjnwIhAEzLDWPgv8BGgDHAVSq7NOERGpxayFtNWw/l3nVmdBFtRpAH1/Bv1uhch+eg6tmuUXeZj27Q5eX7yHAreXpvXr8PAV3bmhf1RAh7STqntkbSbwEvDWyQZjTBAwHRiLE8pWGWPmAt2AZdbaV40xHwLfVHOtIiJSmxzbCxved55DO7HvtAVrJzv/DfLfFe4DVX6Rh1e+28Ur3+0iv8hL8/BQHhvfg6v7RtaKkHaSsdZW7wWNiQY+PTmyZowZAjxprR1X/PrR4kNTgEJr7fvGmPestTee43x3AXcBtGzZsv+sWbOqtP7s7GzCw8Or9Bo1mfqnfOqjsql/yqc+KtuF9E9wUTbNDy2h5f6FNMrcCsCxhjEcaH0ph5oPwRNcvypL9Rl//x4q9FgWphTx2a4iMosgugFc2zWU3s2CqiWkVVf/jBo1arW1Nr684/zhmbU2OMHspFRgEM5t0X8YYy4BFp3rk621rwGvAcTHx9uEhISqqxRITEykqq9Rk6l/yqc+Kpv6p3zqo7KV2z/uQtgx33kObcd88LohIgpG/S/0uYnGjdrSGOheXQX7gL9+D+UXeZi5dC//+G4HOYUeWkeE8fzEGMb1bFWtI2n+1j/+ENbO1vvWWpsL3HleJzBmIjCxc+fOlVqYiIgECGudGZzr34UNH0BhFoQ2hH63Oc+htY7Tc2g+lF/k4a1le5n2zU6yC9y0aVSXF2/qyZiYlr4uzS/4Q1hLBdqe9joKSL+QE1hr5wHz4uPjp1RmYSIiUsMd3X3qObTMVOc5tC5joP8dzrpoQf7wa7D2Sjmayyfr0nh10W6y8t20a1KPf0zqy6ju2o7rdP7wXboK6GKM6QCkATcBN1/ICTSyJiIiJwUXZcKqGU5Ay1gHGIiMg1GPQo+rIKyhr0us1Q5k5jNvfTqzVqaw81A2ANFN6/HSzX0Z2VUh7Wyqe+mOd4EEoJkxJhWYaq193RhzP/AVztIdb1hrN1/IeTWyJiJSy+VnwrYvYOP7DN21EKwHItrC6CecfTkjonxdYa12JLuALzZl8N8VKWzJyASgWXgdJg+L5o5hHWjbpJ6PK/Rv1RrWrLWTztH+OfB5ddYiIiI1XEE2bP/SeQ5td6IzUaBuY9Iix9P2ygehVayeQ/OhE3lFfLV5P7NW7mPtvuNYoHG9EG4Z1I7JwzrQuYX/zkb1N/5wG/Si6TaoiEgtUZjrzOBc+zbs/s7ZUSC0AfSZ5CxaGzWQXYsW0bZ1H19XWivlFLhZsPUAs1amsGLPEbwWGoQFc33/KO4Y3oHurRrUqvXRKktAhDXdBhURCWBF+bDza0h6E/YscgJaSD2IuQri74R2g8EV5Osqa638Ig+J2w4ya1UK3+84jNtrqV8niKv6RDJ5WAdioyIU0C5SQIQ1jayJiAQYdwHsWABJM2DvYvAUQXAodBkLg34J0ZcooPlQodvL9zsP8X5SKt/+cJBCt5e6IUGMjWnJ5GEdiG/fGJdLAa2yBERY08iaiEgAOLlp+spXIXmJE9BcIRA9DAbfp6U2fMzt8bJiz1E+SErhq80HyCvyUCfYxYguzbh9aAcGd2xCcJDL12UGJH3Xi4iI73jcsOMrWPEK7FtWHNCCoM0AGHwvdB+vPTl9yOu1rN53jA9Xp/LZhgyyC9yEBBmGdGrGbUPac0mX5tQJVkCragprIiJSvbweZ5mN5S9D6konoBkXtOoNg+6GXtc5tzzFJ6y1bEg9wZw1qXyyLp3jeUUEuQwDo5tw65B2jO7ekrAQ3YKuTgER1vTMmoiIn/N6YOs8ZwQtNcmZJICBZl0h/g7ofzuEhPm6ylrLWssP+7P4eG0as9ekcji7EJeBfu0a87PB7RgT04rw0ICIDDVSQPS8nlkTEfFDXi9smg0rX4P0tcUBDWgcDXE3w5D7oU59n5ZY2+06lM0n69L4MCmV9BP5GKB3VAQPjuvG5T1bE1FPt6D9QUCENRER8RPWwrp3YNXrsH+Ds1AtQIPW0Pt6GP47qNfEtzXWcilHc/lsdyFTVy0k6uICMgAAIABJREFU+UguAD1aN+CehE6M792apuG6Be1vFNZEROTieNyw5t+w+t9wYJOz1RNAvabQ/UoY+TBEtPFtjbXc7kPZzFufzkdr09hbHNA6twjlfyf0YGKfSFo21C1ofxYQYU3PrImIVLPCPGcNtHXvwqGtYL1Oe50GzlpoIx+GFt19W2MtZq1l+4FsPkhKYd6GdA5kFgDQqXl9Hr68O81yk7lh/EgfVynnKyDCmp5ZExGpBrlHYfkrsOkDOLoHsE57cJizSO2I3zu7CYhPWGvZmHqCfy/byzdbD3I8z3lGsGvLcH5xSUcm9G5NZKO6ACQmpviwUrlQARHWRESkihxPgWXTYetcyEw71R4cBu2GwpB7ofMYbZjuI16vZemuw7y5dC/Ldh0ht9CDAbq1asBvxnRhQmxrWjTQLc6aTmFNRERK278Flr8E27+C3MOn2oPDIHp48W4CoxTQfMTjtcxdn8Z/V+xjfcoJCj1ejIEerRpy86B2jO/dmib16/i6TKlECmsiIrWdtbBvubMG2q5voSDz1HvBdaHDJc4yGx1GKKD5SG6hm7eXJfPR2jR2HMjGYy0uAzGRDbllUHvG925NRF0tsxGoAiKsaYKBiMgF8hQ5+3CumgF7l4A779R7IfWgw0gYcp8zkqaA5hPpx/OYsXg3X20+QNpx5+vjMtArMoKfDW7PhNjW1NdCtbVCQHyVNcFAROQ8FObA1k9h9UxIXXVqkVpwAlrHUc4zaO2HKaD5yOrko8xcupfFOw5zPNf5+gQZQ5+oCG4d0p4rYyO11VMtFBBhTUREziHnCGyeA2vehgMbTy2xAc7uAZ0udTZMbzdYAc0HcgvdLNhygFmrUliTfIx8t/P1CXIZ4to24rYh7Rkf25rQYAW02kxhTUQk0BzfBxs+gPXvwpEdpd+rEw6dxzobprcbpIDmAylHc/lsYwYfrU1j+4Es7MkVUFyGfu0acdvQaMb3bk1IkMu3hYrfUFgTEQkEBzbD+vdg04ell9gAJ6B1HecEtKgBCmjVzOO1rE4+xqcb0/ly434OZhWUvBfsMsS2jeD2odFMiI0kyKWvjfyYwpqISE3k9ULqSmf0bMs8yDtS+v3Qhk5AG/hLiIpXQPOB1cnHeHflPj7fmEFuoaekPdhl6NM2gtuHdmBC79a4FNCkHAprIiI1hbWwZxGhh9bDs7dAYXbp90MbQrfxMGAKtI33TY213N7DOcxatY8PklI5klNY0u4EtEbcPiyaK3u3xig8ywUIiLCmpTtEJKBlHYDVb8LKf0HuYYac/l5oBPS4EuLvhKj+vqqwVjuaU8icNan8Z3lyySbp4Cyz0btNBHcO78DEPpEKaFJhARHWtHSHiAQcr9dZB23ZS7BnESX7cAK7W4yjY5sW0H+yApqP5Bd5+HLTft5csocNaSdKJgkYoFOLcH42uB23DmpPkCYJSCUIiLAmIhIwjqc466AlvQF5R0+1myBnHbQRv2ffngI6JiT4qsJa6+Q+nDMW72HJzsMUeU8F6DaN6nJdvzbcNaIj4WHaSUAql8KaiIivedyw/QtY9jLsW1r6vfCWMPBuGHAH1G3ktO1JrPYSa7OtGSf416I9fLV5PzmnTRRoGl6HK3u35leXdqFZeKgPK5RAp7AmIuIrR3dD0puw5t+Qf+JUuwmCjgmQ8Ai0Heir6mq1/SfyeeP73cxek1ZqokCD0GAu7dGC34zpQodm4T6sUGoThTURkerkLoCt82DFq87SG6cLb+mshTbgFxDW0Df11WLZBW7eXZHMOyv2lZooEBrsYlinptw3ugv92zf2YYVSWymsiYhUh0PbnFG0tW+XXnKjZBTtUWg7wFfV1Vpuj5dPN6bz+uK9bEo/UWo3gb7tGvHLER0ZE9PKt0VKraewJiJSVQpzYcvHsOJfkLGm9HsnR9EG3gWhup1W3ZbuOszLC3eyYs9RijxOQjMGerRuwORhHbiuX5R2ExC/obAmIlLZMtZD0kzYMAuKTt1Oc0bRRsKo/9WSGz6w40AWL36zg4U/HCw1UaB903pMGtiW24ZEU7eOfi2K//Hb70pjTALwR2AzMMtam+jTgkREylKQBRs/gJUz4ODm0u+Ft4RBv3RG0urU9019tdTh7HymfbOTzzZklJoo0KJhKNfEteHukR1pXF8zOcW/VWtYM8a8AVwJHLTW9jqt/XLgRSAImGGtfRZnBchsIAxIrc46RUTOW8oqZ3eBjbPBk3+q3QRBh5Fw6ePQpp/v6quFPNYy7ZsdvJ+UQuqxvJL2iLohXN6zFfeN7kS7JgrNUnNU98jaTOAl4K2TDcaYIGA6MBYnlK0yxswFFltrvzPGtAT+BtxSzbWKiJxd3jFY/56zcO3hbaXfC2/lPIc2+B6oU8839dVSS3Yc4vmvtrHnQA6ZRdsBqBsSxMiuzbh/dBd6tYnwcYUiFWOsteUfVZkXNCYa+PTkyJoxZgjwpLV2XPHrRwGstX8ufl0H+K+19vpznO8u4C6Ali1b9p81a1aV1p+dnU14uB4GPhf1T/nUR2Xz6/4pzIacwzQ8tpHI46tokbUZl3Vzom470luM4lDkGLyhVb/khl/3UTVzey3L0wpJTHGzM9P5fdY1wtKnWRBD2tShST2/fdrHp/Q9VLbq6p9Ro0atttbGl3ecP3wXtwFSTnudCgwyxlwLjAMa4YzGnZW19jXgNYD4+HibUMVbsCQmJlLV16jJ1D/lUx+Vze/6J+cwrHvHWXbj2J7S7xWPokUMuY+IkDB6VFNJftdHPpC09yh//mIra/cd5+SuT9FN6zPlko5E5u9hVC3vn/Loe6hs/tY//hDWzjY32lpr5wBzzusExkwEJnbu3LlSCxORWix1Nax4BTZ/BN6iU+0mCDqMgEufhDZxPiuvNip0e5n2zQ7+u3IfR4snC9QNCeKyni15aFw32jR2bjsnJu4p6zQiNY4/hLVUoO1pr6OA9As5gbV2HjAvPj5+SmUWJiK1jLsQNs+BZdNh/4bS74W3goFTYOivIFizB6vTxrTj/Omzrazcc7RkFK1ry3B+NaozE+Pa+LY4kWpwwWHNGPMb4E0gC5gB9AUesdbOr2ANq4AuxpgOQBpwE3DzBdakkTURqbjMdGfJjaTXIf/4qXZXMLQfDmOehDZ9fVVdreT2ePln4i7eWp7MoawCwNmX88o+kTw4ritNtNyG1CIVGVm7w1r7ojFmHNAcmIwT3soNa8aYd4EEoJkxJhWYaq193RhzP/AVztIdb1hrN5dxmh/RyJqIVMjeJbB0GuyYD9Z7qr1x9KndBVxBPiuvNtq2P4s/fbaFJbuO4PFaDBAbFcHvxnYloVsLX5cn4hMVCWsnnzEbD7xprV1vjDmvPTmstZPO0f458HkFahERuTCFuc7OAt+/CMf3nmoPqQ89roTRT0CjKJ+VVxt5vZbXv9/DG0v2kHHCWauuUb0Qru8XxQNju1I/1B+e2BHxnYr8DVhtjJkPdAAeNcY0ALzlfE6V0m1QESnXsb2w+O9OUHOfXLzWQOs+MPIh6D7Bl9XVSnsOZ/PMZ1tZtP0QRR6Ly0B8+8Y8dHl3BnZo4uvyRPxGRcLanUAcsNtam2uMaYpzK9RndBtURM7KWtjxNST+GdJP20i9fjPocwskPKKFa6uZ12v574p9vLpoFynFuws0C6/DpIHtuG9UJ8JCNIomcqYL/lthrfUaYw4AMcYY/a0SEf9TkAVLX4KVrzq7DYAzWaDDSBj9uCYL+EDq0Vz+7/OtLNh6kEKPlyCXYVinpjx0RXf6RDXydXkifq0is0GfA24EtgCe4mYLLKrEui60Jt0GFRE4sBnmPw67E8EW/3hqHA2D74X4OyFI/76sTtZaPlydyvSFO9l7JBeAlg1D+fmQaO4c3oGwEE3eEDkfFfnJdTXQzVpbUNnFVJRug4rUYl6vs+TGkhfgRKrTFlIXuk+E0f8Ljdv7tr5aaP+JfP78xVa+2ryf/CIvwS7DqG4teHBcV2IitT+nyIWqSFjbDYQAfhPWRKQWOpEG8/8AP3wOngLAQKtYuOR/oMdV4HL5usJaxVrLvPXpTPt2JzsPZgMQ2SiMO4d34JZB7TWKJnIRKhLWcoF1xphvOC2wWWt/XWlVXSDdBhWpRTbOhu+ehcPbnddhjZydBYb9FsKb+7a2WuhIdgHPffkDn27IILfQQ7DLMC6mJQ+M7Ur31lW/qb1IbVCRsDa3+I/f0G1QkQCXcxS+meoEtaIcMC6IvgRGPgzRw+H8lnqUSmKtZf7m/fx9wQ5+2J8FQNvGdXnkio7c0L8tdetoFE2kMlVkNui/q6IQEZFSrIXtX8HCP8H+jYCFBq2dNdH63w51NYOwuh3NLuBvX2/no3Vp5BR4CAkyXBnbmvtGdaaHRtFEqoymRomIXwkpzIQvHoF170BBJrhCIOYq5zZnZF+NolUzay3f/nCQv3+9nc3pmVigXZN6PDa+I9f2jdIomkg1CIiwpmfWRGq43KOw9j+w9j8MObLTWXajaRe47BnodR2Ehvu6wlrnWE4h077dwYdJqWQVuAkJMkzs05p7EjSKJlLdKhzWjDH1rbU5lVlMRemZNZEaKPsQJL0JG96Fo3sAC3UbkxY5nrZXPQYtY3xdYa1jrWXxjkP87esdrE85jgXaN63Ho+O7c41G0UR8piKL4g4FZgDhQDtjTB/gl9baeyu7OBEJMJnpsPI12PghnEhx2uo1g4F3QZ8bIbIfu777jrYKatXqWE4hr3y3i3dX7iMz302dIBdXxUVyT0InurfSKJqIr1VkZO3vwDiKZ4Raa9cbY0ZUalUiEjiOJcPyf8KWjyErw2kLbwmD74e4SdCyp55D8wFrLUt3HuFvC7azJvkYFohuWo/HxvfgJ3FtNIom4kcqdBvUWptiSv9w9ZzrWBGphQ7vgGXT4YdPIeeQ09awDQx7AOJuhuZdfVtfLXYsp5AZi3fzzop9HM8rok6Qi5/ERXK3RtFE/FZFwlpK8a1Qa4ypA/wa2Fq5ZV0YTTAQ8TFrYf8mWD4dtn95avP0iLZwyYPQ9xZo0sG3NdZi1lqW7TrCC9/sYNXeo1gLHZrV55ErumsUTaQGqEhYuxt4EWgDpALzgfsqs6gLpQkGIj5gLaQlwbKXYefXUOAsjkrjDjDoHiegRUT5tsZa7lhOITOX7uWtZXs5luuMol3Ttw13jeioUTSRGqQii+IeBm6pglpExN95vZC8BJa/DLu/c3YTAGjSybnF2fdn0KClb2us5ay1rNhzlGnf7GD57iN4LXRs7oyiXdVHo2giNVFFZoN2AH4FRJ/++dbaqyqvLBHxG14P7PoWVvwT9i4Bdz5goFkXJ5z1vRXqNfF1lbXe0ZxC3lmezMylezmSU0idYGcUbYpG0URqvIrcBv0YeB2YB3grtxwR8QueIufZsxWvQsoK8BQCBpp3g34/d0JaWISvq6z1To6ivbxwJ9/vPIzXQqfm9Xn4iu5MjI3UKJpIgKhIWMu31k6r9EpExLeK8mHLXEj6F6StAa/b2TC9RQ/od5sT0OrU93WVAmQVWl5euJM3l+zlUHYBdYJdXNsviimXdKRbqwa+Lk9EKllFwtqLxpipOBMLCk42WmvXVFpVIlI9CnNh4wfOTgL7NzjbPBmXs/ZZ/zucZTZCwnxdpQAer7O7wJtL9vL9jlw8dhudW9Tn4cu7MUGjaCIBrSJhrTdwKzCaU7dBbfFrn9DSHSIXwFpIXgbfPQt7vy8OaEHQqjfE3wF9JkFwHV9XKcW27c/ivyuSmbMmjawCN2EhLka2Debha4dqFE2klqhIWLsG6GitLazsYipKS3eInIes/bB0Gqx9B/KPAwZaxMDge6HPTRBU4a2CpZIdyS7g43XpvLVsL8lHcnEZGBDdhMnDohnVvQXLvl+soCZSi1Tkp/N6oBFwsJJrEZHK5i50tnla8gIc2Oy01WsOQ+6HkQ9DmGYJ+osCt4dvtx7kreXJrCheciO6aT0evzKGq+MiaRoe6usSRcRHKhLWWgI/GGNWUfqZNS3dIeIv9m+Cxf8Ptn0G7gIIqgNdL4dRf4DWsb6uTopZa1mXcpx3V+5j3voM8oo8NAwL5rah0dw0oJ1Gz0QEqFhYm1rpVYjIxcs9Cqv/DStfg6x0nNucPWDor6H3DbrN6UfSj+cxe00q/12xj4wT+QS7DKO7t+CWwe0Z3rkZQS5tbC8ip1RkB4PvqqIQEakArwd2fgNL/g77loP1Qr2mzm3OS/5Hi9X6kZwCN19u2s87K5JZu+84FugV2ZDfjunC+N6taRAW4usSRcRPnXdYM8Z8b60dbozJwpn9WfIWYK21evhFpLoc2QXL/wnrZ0FhFgSFQOcxMPIRiOrv6+qkmNdrWb77CLNWpfDl5v0Uur20aBDKry/twnX9omjXtJ6vSxSRGuBCRtbqA1hr9RCFiC8UZMPGD2H5dDi83Wlr3h2G/Apib4BgPYDuL3Ydymb26lTeW5XCkZxCwkJcXNUnkhsHtCW+fWOM0W1OETl/FxLWbPmHiEilshaSlzoBbftXzq4CYY2c5TaG/hoatvZ1hVLseG4h8zZk8O6KfWzJyMQYGNKxKTcNbMdlMS0JC9GitSJSMRcS1loYY353rjettX+rhHpKMcbUBxYBU621n1b2+UX81ok0WPNvSHoDcg6BKxg6JsAlv4d2g0EjM36hyOPlu22HeH91Ct9uPYjba4luWo/Hxnfn6rg2tGio3R9E5OJdSFgLAsJxnlGrEGPMG8CVwEFrba/T2i8HXiy+xgxr7bPFbz0MvF/R64nUKEX5zlIby16GtCSnrVkXZ7mN2J9qX04/Ya1lc3oms9ekMmdNGifyioioG8KtQ9pzXb8oekY21G1OEalUFxLWMqy1T1/k9WYCLwFvnWwwxgQB04GxQCqwyhgzF4gEtgD6p6kELmshYx2smgEbZ4M7D0IbwsBfwuB7oEkHX1coxQ5m5vPxujTeW5XCrkM5BLsMl/ZowQ392zKyW3NCgly+LlFEAtSFhLWL/qeitXaRMSb6jOaBwE5r7W4AY8ws4Cc4o3j1gRggzxjzubXWi0ggyDnszORc+RocT3b25uwwAob9GjqMBJeeb/IHeYUevt56gA+SUliy8zBeC73bRPDHq3sxMbY1jeppD1URqXrG2vObN2CMaWKtPXrRF3TC2qcnb4MaY64HLrfW/qL49a3AIGvt/cWvbwcOn+uZNWPMXcBdAC1btuw/a9asiy2xTNnZ2YSHh1fpNWoy9c+5uTwFND62jmap82l5Yg0u6yWzfgf2R47jYItLcIeo38D330Nur2XLEQ/LMtysOeChwANNwgzDIoMZGhlM63Dfj6D5uo/8nfqnfOqjslVX/4waNWq1tTa+vOPOe2StMoLaOZxtxK4kQVprZ5b1ydba14wxGcDEBg0a9E9ISKjc6s6QmJhIVV+jJlP/nCE/E3bMhw3vw+6F4CmkMLgBrv6TYcAvaNgyhoZAV1/X6Ud88T3k9VrW7DvGJ+vSmbs+nRN5RYSHBnNNv7ZcFRfJ4A5NcfnRrgL6e1Y29U/51Edl87f+8Yf9Z1KBtqe9jgLSL+QE1tp5wLz4+PgplVmYSIXkHIZtn8P692DfMrAeqNMAel4DfW5iWbKXkaPH+LpKAbbtz+KTdWnMWZPK/swCQoNdXNqjBdf0jWJE12aEBut2tIj4nj+EtVVAF2NMByANuAm42bcliVygE6mw9VNY/y5krAess+1T/GRnX86oASXPodmURJ+WWtulHM1l3oZ0Zq9OZdehHFwGhnRqysNXdGdsTCvCQ/3hx6KIyCnV+lPJGPMukAA0M8ak4qyf9rox5n7gK5ylO96w1m6+wPNOBCZ27ty5sksWObfDO2HLJ7Bh1qkdBSKiYPhvoee10Kq31kPzE0eyC/h8YwYfrk5lfeoJoHiiwE96Mr53a5qGa/cHEfFf1RrWrLWTztH+OfD5RZxXt0Gl6lkL+zcUB7T34USK0960C4x+AmKuctZFE7+QXeDm6y37mbMmrWQmZ/sm9Xjo8m5MjI2kbRPtyykiNUNAjPdrZE2qjNcLqSth8xzYNMfZTQADrWNhyP3QfQI0alvuaaR6FLq9fLf9EB+tSWXB1oMUerw0C6/DlEs6ck2/NnRv1dDXJYqIXLCACGsaWZNK5SmCvYth02zYMg8KTjjroLUbApc+Ad3GQ/1mvq5Sinm9lhV7jvLxujQ+XZ9OTqGneCZnG27oH0W/do39aianiMiFCoiwJnLRCnNh17ew8UPY8SUU5UFQHeg02pkg0GUshEX4ukopdnLLp4/XpTFnTRpHcwqpE+RiVPfm3DSwHcM7N9OOAiISMAIirOk2qFRI/gnYPt+ZILBnEXgKIaQ+dJsAva51glpIXV9XKafZcziHuevS+WB1CqnH8nAZGBDdhJ8Nbs+YHi2pW0dLbYhI4AmIsKbboHLesg8Vr4H2LqSsdNZAC2sEcTdDzNUQPRyCQnxdpZzmYGY+8zZk8EFSCj/szwKge6sG/OmaXkzorS2fRCTwBURYEynT8RTYOs8JaPs3AhbCW8Gge5wZnFEDwKVbZv4kM7+ILzft54OkFJL2HsMCUY3r8uBl3bi2fxtaR2jEU0Rqj4AIa7oNKj/i9ThLbHz3HBz6wWlr0hFGPgQ9JkLLXloDzc/kF3n49oeDzFiTz4b5X+P2WhrXC+GO4R2YNLAdnVtoH0MRqZ0CIqzpNqiUcBfCqtdh8V8g9wg0ag9jnoTuE6GZwry/KfJ4+X7nYT5ak8ZXm/dT4PYSHgJXxkYyeVgHYqMiMArVIlLLBURYE6EgB75+HNa9A+58aNoZJvzNGUVz6aFzf+L1WpKSj/Hx2jTmrk8nu8BNaLCL4Z2bMXlYNIWpmxg9qq+vyxQR8RsKa1KzHfwBvngY9i4C64Xm3eGyZ6DzGN3m9CMnl9r4pHipjSM5hQS7DAM6NGHy0GhGdmtesml6Ypq+biIipwuIsKZn1moZT5Gz3dOiv8CxPU5by15wxfMQPcy3tUkpuw5lM3ddOh+uTiXtuLPURmxUI/4woQfjeraivjZNFxEpV0D8pNQza7XEkV2wbDqs+y+485y2Vr3hyhcgKt63tUmJ9ON5fLohnQ+SUtlxMBtwltr44096MbGPltoQEblQARHWJIAV5TuzOle8CumrT7W36gNXTYPION/VJiWO5hTy2cYMZq9OZV3KcQDaN63HI1d05+q4NrSKCPNxhSIiNZfCmvin/Ztgzb+dUbTC7FPtrWLhJ9OdjdTFp7IL3MzfvJ/Za1JZtusIXgutGobxq9Gdua5fFNHN6vu6RBGRgKCwJv6jIMvZm3PNW5C+pvR7LXvB1f9USPOx/CIPidsOMmdtGgt/OEiRx1kL7fahHbghPorurRpoqQ0RkUoWEGFNEwxquJRVsGYmbJwD7tzS7zXv4YykRfX3SWkCbo+XJbuO8PHaNL7ctJ+8Ig/hocFc2y+Kn8ZH0a9dYwU0EZEqFBBhTRMMaqDco7B+Fqx9Gw5u+fH7TTvDVdOh/eDqr03wei1r9h3jk3XpfLI+ncy8IsJCXIzt0ZKfDmjLkI5NCQ7SFl0iItUhIMKa1BDWwp5FzrNoWz8FT8GPj2nU3pnd2Xl09ddXy1lr2ZKRydz16cxZk8ahrAJCggyXdGnOT+PbktCtOWEhWmBYRKS6KaxJ1cva7+wssObtU+uinalBa7jiOYj5SfXWJuw9nMPc9c5aaPuO5uIyMLBDEx4b352xMa0I11poIiI+pZ/CUjW8HtjxtTOKtmM+eN1nP65eM2fvzrhbwKXbatXlYGY+8zZk8OHqFLZmZGGAXm0i+NM1vbiiV2ua1NdaaCIi/kJhTSqXpxC+fQbWvgNZ6ec+LrQhjHwEBv4CgkOrr75aLDO/iC837Wf26lRW7j2KtdCpeX3+ML4HV/ZpTeuIur4uUUREzkJhTSrH8RT47lnI7QLb/nLu44LrwvDfwpD7ILRB9dVXS51camP26lQWbjuE22tp2TCU+xM685O+bejcItzXJYqISDkCIqxp6Q4fyjoAi/8Kq2c6o2rdnjr7ca4QGDgFLvk91G9arSXWNh6vZfnuI8xZk8rnG52lNhqEBTNpYDuu6x9Fn6gILbUhIlKDBERY09IdPpB7FJa8ACv/BUWn1kbruv+TMw50QdwkSHgUGrWt3hprEWstG9NO8NHaND5ak8bxvCJCg12M69mKG+KjtNSGiEgNFhBhTapRQZazmfqy6VCQ+aO3W2VuOPWi+5Uw+nFo0b0aC6xd9hzO4ZO1abyXlELGiXyCXIZhnZpy08B2jO7eQkttiIgEAIU1OT9FebDyNfj+Bcg7es7DlnV8gGGe5c4Mz6j4aivv/7d37/FR1ee+xz9PEq4BwiUQIAnXcC2iQBBvKFcF8a7bVmvrObbSvnZ1W2trte1u2afn7LrP9uzWveuuRaW2aqVqtQKiKCoKKvdIAKnlnit3CAQIuT3nj5nYiCEBSWatTL7v1ysvZq2ZWfPwvGYmT35r/X5PS1Izk3Puyjw27ynFgJEZKdwzeRDTR/QipX2roEMUEZFGpGJN6ldZHll+472HoXRXPQ9MgCHTqOh6Llzxk5iF11LUzOScuzKPnLxDONA/NZkfXTmUa85Np2dK26BDFBGRJqJiTepWXQXrnoMl/wYlead+XKdMGPN1GHUbdOoNS5bELMR4VzOTc+6qfJZt3kdltdO9Yxv+ccJArh+dTlYPzaYVEWkJVKzJZ7nDxpfgnV/A/s11P8YSYch0GPM/YOBkLWbbiGpmcj6/Kp9FH++irKKaDm2S+PLYTG4ak8F5mZ01k1NEpIVRsSZ/98lr8Pb/gd3r674/JSNSoI36GnTsGdPQ4lnNTM4XVhfwykeFHC6rpHVSpGn6l8dmctFAzeQUEWnJVKwJbH0n0nWgcPXn77MEGDwdsu+AgZM0itaItu87yp/XFPD86nz2HDlBohkXDOjKreP6MnmYZnKKiEjkuvmIAAAVkUlEQVSEirWWLG8FvPW/YOeyz9/XsReM/WZ0FC0t9rHFqT2Hy1i0o4JZD7/Djn2R9elG9O7E96YO1kxOERGpU2iLNTMbBtwDpAJvuftvAg4pfhTnwuKfwda3P7vfEiBrCoz7dmQUTddGNYrikuMsXL+L51fl88nuIwD06ZrEA9OHcu15vdWTU0RE6hXTYs3M5gBXAXvcfUSt/dOAR4BE4Al3f8jdNwHfNrME4PFYxhm39v4N3vgxbH7js/uTU+H8b8Ho2zWK1kgKDh7j1dxiXlhTwJY9pQD07tyWuydl0au8kFuvmhhwhCIi0lzEemTtKeDXwB9qdphZIvAoMBUoAFaZ2Tx3/9jMrgEeiD5HvqgD22HhD2DLYsCjOw36XQKX3KtRtEaSt/8Yr64v4oXVBWzbdxSAzK7t+O6UQVw1svenTdOXLCkOMkwREWlmzN0bflRjvqBZP2BBzciamV0IzHL3K6LbDwK4+y9qPedVd59xiuPNBGYCpKWljZk7d26Txl9aWkqHDh2a9DUai1Ueo3v+IjJ2v0mnskIqEtpS3OV8CntfyYkugyCh8Wv15pSfxrDraDWrdlWysriS/NLIZ6lPR+P8XkmMTUsiLfnzEzJaWo7OlPLTMOWofspPw5Sj+sUqPxMnTlzj7g22+wnDNWvpQH6t7QJgnJlNAG4A2gALT/Vkd58NzAbIzs72CRMmNFmgAEuWLKGpX+Os7d0M8+6C/OV/39dzJK0mPEifIdPp04SjaM0iP2dpy55SFuQW8ec1BeQfPA5AVvdkHhifyYxzepHZtX29z28JOTobyk/DlKP6KT8NU47qF7b8hKFYq6tycHdfAiw5rQOYXQ1cnZWV1YhhNUP5K+HV+2BXtJl6UjsYcSNM/qmuRTsL7s7fdpcyf10RL+cUUHioDIAhPTvykxnDmH5OL9I7a5KAiIg0jTAUawVAZq3tDKDoTA7g7vOB+dnZ2Xc2ZmDNQnU1/HV+ZHbnge2RfV36wfjvR1pA6Vq0L8Td+bj4MAvWFfNyTiG7DkcKtOG9O/HN8QOYPqKX+nGKiEhMhKFYWwUMMrP+QCHwFeDWMzlAixxZq6qEnKcji9ke2wcJiZFlN6b9G6S2oDw0IndnQ+Fh5ucW8pecIvYcOYEB52Sk8J1JWVzxpTR6dFSBJiIisRXrpTueAyYAqWZWAPzM3Z80s7uARUSW7pjj7hvP5LgtamTNHT6eB6/dD6W7oG1nuPQHcNkPIVELqp4pd+ej/EPMzy3ilZwi9h8txwzOy+zMvVMHc/nwNLp1aBN0mCIi0oLFtFhz91tOsX8h9UwiaEiLGVnb9i4suBcObIU2HeHKhyNdBnSq84xUVzs5+QeZt66IeR8VcfBYBQkGY/p24YfThjJ1eBpdklsHHaaIiAgQjtOgZy3uR9YK18Kr34OiHEhqA5c9AJfdHzn1KaelqtpZveMA83OLmL+umJLjFSQmGOP6d+XG0RlMGZamVk8iIhJKcVGsxa19m2Hh/bDt7ciaaOfPhKk/h1a6bup0VFU7K7bvZ8G6YhbkFnG4rJKkBOPCgd24cXQGk4b1oFNbFWgiIhJucVGsxd1p0JJCePOfYcNLkVOcI26Cq34JbTsFHVnouTvrC0t4aW0BL+cUUXK8glaJxiWDUrlhVAYTh/agQ5u4eNuLiEgLERe/teLmNOixA/DOv8LqOeBVMHAyXP8YdOgRdGSht21vKX/JKeT51QXsOlxGohkXZXXj5uxMJg/rQfvWcfFWFxGRFki/wcKg/Ci8/wgs+xVUnYCMsXD9bOg2IOjIQm334TLmryvijyvz2LY30ovz3MwUvjtlENNH9NI1aCIiEhfiolhrtqdBK8th9ZORtdLKS6H7ULjuMUgfFXRkoVVyvILXNxTz7Io8cgtKABjYPZmfzBjGVSN7a6FaERGJO3FRrDW706DV1bD+BVj0o8iCtikZcPPTkDUp6MhCqayiirc27eGPK3ayfNsBqtxJ69iGuydlcd2odAZ2VzNiERGJX3FRrDUb7rD5TVj4fTi0E9p3gxufjPTv1Fppn1FZVc0HW/fzxxV5vP3JHsorq+nUNonbLujDDaMzGJmRgilnIiLSAqhYi5W8FZG10nZvgNYdYPr/hbF3QkJC0JGFhruTk3+IuSvzeDW3mKPlVbRtlcCVI3rxD9kZXDCgG4kJKtBERKRliYtiLdTXrO3+GF77AexY9vcFbcffB0laIb/G5t1H+NOqfF7KKeTA0XISE4xLB6fy5ew+TBjSnbattPiviIi0XHFRrIXymrWDO+GNH8Om+ZEFbcfeCVP/BVonBx1ZKBQdOs6LawqYuzKPopIyDBjdtws/unIYl38pTYvVioiIRMVFsRYqpXvgrZ/DR89EtkfcBFf+O7TvGmxcIXDwaDmvrCvkmeV5bNlTCsCQtI7MunQAM0b2pntHNUwXERE5mYq1xlJ2GJb+P/jwUaiugKwpcM1/QafeQUcWqGPllby+YRe//2AHuYUluEPvlLbcO2Uw143qTd9uGmkUERGpj4q1s1VRBit/C0segopjkQVtr/sNpA4KOrLAVFRV8+4ne5nz/nZWbj9AZbXTpX0r7ri4PzeMTmd4r06aySkiInKa4qJYC2SCQVUlrHsu0sPz+EHoPgSu/W/IyI5dDCFSM5NzzvoyvrV4EScqq2nfOpHrR6Vz05gMxvbrSoJmcoqIiJyxuCjWYjrBwD0yaeC1H8LhQuiUDjc8DoOmNvlLh9GeI2U8s3wnz67IY39pOa0SYOKwNL6cncn4Qd1pnaSlSURERM5GXBRrMbP9PUavuQ9Kt0K7rpH+nSNvbnEL2pZXVrN4025+++5WcgtKcGBYr47cf8UQOpVsZfqUljm6KCIi0hRUrJ2u6mp49fu0PrEfpj0UWYojsWWl76+7DvPE0m0syC2mrCLSUeCb4/vzlfP7fNryacmSbQFHKSIiEl9aVrVxNhIS4JbnWPnRVi694PKgo4mZkmMVvLg2n9+9v4OCg8dJMLhkUCr/86L+jB+USlKiTnOKiIg0JRVrZ6LbQKoT84OOoslVVTvvb9nHb9/bxodb91HtkNGlHf88YxjXj86ga7K6L4iIiMSKijX51M79R/nDhzt5YXU+h8sqadsqgRtHZ3D7Rf0YkZ4SdHgiIiItUlwUa6HuDRpyx8orWZBbzBNLt/G33aUYMDIzhZnjBzJleA/aJKkvp4iISJDiolgLZW/QEHN31uw8yJxl23lz024qqpxuya25e1IWt47rQ6+UdkGHKCIiIlFxUazJ6dl9uIy5K/N4evlO9pWWk5RgTBzag5mXDiC7bxd1FRAREQkhFWtx7kRlFW9t2sMTS7eRk3cIBwZ2T+Z7Uwdz7XnpJLfRW0BERCTM9Js6Tm0sKuEPH+5k3kdFHK+oIrlNIrdd0Jc7LulP/1Q1TxcREWkuVKzFkYNHy3k5p4CnPthJ3oFjJBiM6duFf5yQxaWDu5Oo3pwiIiLNjoq1Zq6q2nlv816een8HSzfvpdqhZ6e23H/FEG4d14fO7bUmmoiISHOmYq2Zyj9wjGeW72TuqnxKjlfQOimB6SN68Z2JWQzv3Sno8ERERKSRqFhrRmoaqD8enSwAMLRnR2ZdM5wZ5/SmdZJaP4mIiMQbFWvNwPZ9R3n6wx38aXU+R09EJgt8/cK+fPuygfTurDXRRERE4lloizUzuw6YAfQAHnX3NwIOKabKKqpYtHEXj7+3jQ1FhyOdBTJSuHvSICYO7aHJAiIiIi1ETIs1M5sDXAXscfcRtfZPAx4BEoEn3P0hd/8L8Bcz6wI8DLSIYm3LniM89cFO/rymgOMVVaS0a8W3Lh3ANy7pT49ObYMOT0RERGIs1iNrTwG/Bv5Qs8PMEoFHgalAAbDKzOa5+8fRh/wken/cOl5excL1xcxeuo1Pdh0hwWBsv67cNSmLiwemkqBRNBERkRbL3D22L2jWD1hQM7JmZhcCs9z9iuj2g9GHPhT9edPdF9dzvJnATIC0tLQxc+fObbrggdLSUjp06NAox8o/Us07eRV8UFRJWRWktoOJGa0Yn9GKTm2aZ4HWmPmJV8pR/ZSfhilH9VN+GqYc1S9W+Zk4ceIad89u6HFhuGYtHcivtV0AjAPuBqYAKWaW5e6P1fVkd58NzAbIzs72CRMmNGmwS5Ys4Wxe4+iJSuavK+LxpdvYuvc4iQaXDErl25dlccGArs2+P+fZ5qclUI7qp/w0TDmqn/LTMOWofmHLTxiKtbqqE3f3/wT+87QOYHY1cHVWVlajBtaY1heUMOf97byaW0x5VTVpndrw4PSh3JydSZdkLVwrIiIidQtDsVYAZNbazgCKzuQA7j4fmJ+dnX1nYwZ2to6UVfDKR4U8vnQ7O/cfIynBmDysBzMvHcDoPl2a/SiaiIiINL0wFGurgEFm1h8oBL4C3HomBwjTyJq7k5N/iN8t287rG3dRUeVkdGnHrKuHc/3oDFLatQo6RBEREWlGYr10x3PABCDVzAqAn7n7k2Z2F7CIyNIdc9x945kcNwwjayXHKnhpbQFPLNtO4aHjtEo0rjynF3dc3J+RGSkaRRMREZEvJKbFmrvfcor9C4GFX/S4QY2suTurdhxkzrLtLN60m8pqZ0D3ZH5xwzlcfW5vOrQJw8CliIiINGdxUU3EemTtwNFyXlidz+/e38Guw2W0SUrghtHpfP3CfoxIT4lFCCIiItJCxEWxFgvuzodb9/NoThlr31hMVbUzrGdH7rt8MDNG9qJ9a6VSREREGl9cVBixOg06a/5GCvZX8dVxffnquL4M6dmxSV9PREREJC6KtVicBjUzHrttDFtyV3H55BENP0FERESkESQEHUBzMqB7B1onalaniIiIxE5cFGtmdrWZzS4pKQk6FBEREZFGFRfFmrvPd/eZKSmaiSkiIiLxJS6KNREREZF4pWJNREREJMTioljTNWsiIiISr+KiWNM1ayIiIhKv4qJYExEREYlXKtZEREREQkzFmoiIiEiIxUW7qZreoMBhM9vcxC+XCuxr4tdozpSfhilH9VN+GqYc1U/5aZhyVL9Y5afv6TzI3L2pA4krZrba3bODjiOslJ+GKUf1U34aphzVT/lpmHJUv7DlR6dBRUREREJMxZqIiIhIiKlYO3Ozgw4g5JSfhilH9VN+GqYc1U/5aZhyVL9Q5UfXrImIiIiEmEbWREREREJMxZqIiIhIiKlYO01mNs3MPjGzLWb2QNDxhI2ZZZrZO2a2ycw2mtk9QccURmaWaGY5ZrYg6FjCyMw6m9mLZvbX6HvpwqBjChMzuzf6+dpgZs+ZWdugYwqamc0xsz1mtqHWvq5m9qaZbY7+2yXIGIN0ivz8e/QzlmtmL5tZ5yBjDFpdOap13/fNzM0sNYjYaqhYOw1mlgg8CkwHhgO3mNnwYKMKnUrgPncfBlwAfEc5qtM9wKaggwixR4DX3X0ocC7K1afMLB34JyDb3UcAicBXgo0qFJ4Cpp207wHgLXcfBLwV3W6pnuLz+XkTGOHuI4G/AQ/GOqiQeYrP5wgzywSmAnmxDuhkKtZOz/nAFnff5u7lwFzg2oBjChV3L3b3tdHbR4j8kk0PNqpwMbMMYAbwRNCxhJGZdQIuBZ4EcPdydz8UbFShkwS0M7MkoD1QFHA8gXP394ADJ+2+Fvh99PbvgetiGlSI1JUfd3/D3Sujm8uBjJgHFiKneA8B/BK4Hwh8JqaKtdOTDuTX2i5AhcgpmVk/YBSwIthIQudXRD741UEHElIDgL3A76Knip8ws+SggwoLdy8EHibyV34xUOLubwQbVWiluXsxRP6QBHoEHE+Y3QG8FnQQYWNm1wCF7r4u6FhAxdrpsjr2BV5ph5GZdQD+DHzX3Q8HHU9YmNlVwB53XxN0LCGWBIwGfuPuo4CjtOzTV58Rve7qWqA/0BtINrPbgo1KmjMz+zGRS1ieDTqWMDGz9sCPgZ8GHUsNFWunpwDIrLWdgU4/fI6ZtSJSqD3r7i8FHU/IXAxcY2Y7iJxGn2RmzwQbUugUAAXuXjMi+yKR4k0ipgDb3X2vu1cALwEXBRxTWO02s14A0X/3BBxP6JjZ7cBVwFddC66ebCCRP4rWRb+zM4C1ZtYzqIBUrJ2eVcAgM+tvZq2JXNQ7L+CYQsXMjMi1Rpvc/T+Cjids3P1Bd89w935E3j9vu7tGRWpx911AvpkNie6aDHwcYEhhkwdcYGbto5+3yWgCxqnMA26P3r4deCXAWELHzKYBPwSucfdjQccTNu6+3t17uHu/6Hd2ATA6+h0VCBVrpyF6IeZdwCIiX47Pu/vGYKMKnYuBrxEZMfoo+nNl0EFJs3M38KyZ5QLnAf8acDyhER1xfBFYC6wn8v0dqpY4QTCz54APgSFmVmBm3wAeAqaa2WYis/keCjLGIJ0iP78GOgJvRr+rHws0yICdIkehonZTIiIiIiGmkTURERGREFOxJiIiIhJiKtZEREREQkzFmoiIiEiIqVgTERERCTEVayLS7JhZt1pLxOwys8Ja262b6DWTzOwL9yo1s++ZWdvGOJaItCxaukNEmjUzmwWUuvvDJ+03It9xjdKLNdo8fZ+7d/6Czy8ARrj7obM9loi0LBpZE5G4YWZZZrYhusjnWqCXmU03sw/NbK2Z/ammObyZjTWzd81sjZm9ZmZpdRxvoJmtMLNVwKyT7nvAzFaaWa6Z/bTW6280s6fNbL2ZPW9m7czsXiLNxJea2eJax3jIzNZF41OzcRGpk4o1EYk3w4Eno83gK4g0g5/s7qOBXOAeM2sDPALc6O5jgGeAn9dxrP8CHnH3scDemp3R7hx9gHFEOi1cZGY1fTqHA4+6+zlAGfAtd/8lkf6U4919SvRxKcC77n4ukdXT72i0DIhIXEkKOgARkUa21d1XRW9fRKR4+iByVpTWwDJgGPAlYHF0fyKR/n8nuxC4Onr7aeBforcvB6YDOdHtDsBgIgXZdndfHt3/DDAT+FUdxz7u7q9Fb68Bxp/R/1JEWgwVayISb47Wum3A6+7+tdoPMLNRQK67N1QgefTnZAb8b3d/8qTjZtXx+FNdGFxe63YV+j4WkVPQaVARiWcfAJeZ2QAAM0s2s0HAx0C6mZ0f3d/azL5Ux/OXAzdHb3+11v5FwDdqXf+WYWap0fv6m9nY6O1biIzkARwh0jxbROSMqFgTkbjl7ruBbwB/MrN1RIq3we5+ArgJ+I/o/hwi15+d7J+Ae81sJZFTnTXHXQi8CCw3s/XA87Xu3wjcaWa5QDIwO7p/NpHTrp9OMBAROR1aukNEpJFET4O+6O7nBR2LiMQPjayJiIiIhJhG1kRERERCTCNrIiIiIiGmYk1EREQkxFSsiYiIiISYijURERGREFOxJiIiIhJi/x/P973jGU4vUgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f55d3ce8a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "linearize_tree_dfs_rec_mean_y = [float(x) for x in linearize_tree_dfs_rec_mean.index]\n",
    "linearize_dfs_mean_y  = [float(x) for x in linearize_dfs_mean.index]\n",
    "\n",
    "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(10,10))\n",
    "fig.suptitle('DFS linearization of a complete tree')\n",
    "\n",
    "ax1.plot(linearize_tree_dfs_rec_mean_y, linearize_tree_dfs_rec_mean, label='linearize_tree_dfs_rec')\n",
    "ax1.fill_between(linearize_tree_dfs_rec_mean_y,  linearize_tree_dfs_rec_min, linearize_tree_dfs_rec_max)\n",
    "\n",
    "ax1.plot(linearize_dfs_mean_y, linearize_dfs_mean, label='linearize_dfs')\n",
    "ax1.fill_between(linearize_dfs_mean_y,  linearize_dfs_min,  linearize_dfs_max)\n",
    "\n",
    "ax1.set(ylabel='Time ns')\n",
    "ax1.grid()\n",
    "ax1.legend()\n",
    "\n",
    "ax2.plot(linearize_tree_dfs_rec_mean_y, linearize_tree_dfs_rec_mean, label='linearize_tree_dfs_rec')\n",
    "ax2.fill_between(linearize_tree_dfs_rec_mean_y,  linearize_tree_dfs_rec_min, linearize_tree_dfs_rec_max)\n",
    "\n",
    "ax2.plot(linearize_dfs_mean_y, linearize_dfs_mean, label='linearize_dfs')\n",
    "ax2.fill_between(linearize_dfs_mean_y,  linearize_dfs_min,  linearize_dfs_max)\n",
    "ax2.set(yscale='log')\n",
    "\n",
    "ax2.set(xlabel='Tree depth', ylabel='Time ns')\n",
    "ax2.grid()\n",
    "ax2.legend()\n",
    "\n",
    "plt.savefig(\"linearize_dfs_tree.png\", dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
